#if !defined(ximera_graphics_iviewport_hpp)
#define ximera_graphics_iviewport_hpp

// -----------------------------------------------------------

#include <ximera/graphics/icamera.hpp>
#include <ximera/math/color.hpp>

// -----------------------------------------------------------

namespace ximera { namespace graphics
{
    class XIMERA_API IViewport
    {
    public:
        virtual ~IViewport();
        
        virtual Real left() const = 0;
        virtual Real actualLeft() const = 0;
        virtual void left(Real value) = 0;

        virtual Real top() const = 0;
        virtual Real actualTop() const = 0;
        virtual void top(Real value) = 0;

        virtual Real width() const = 0;
        virtual Real actualWidth() const = 0;
        virtual void width(Real value) = 0;

        virtual Real height() const = 0;
        virtual Real actualHeight() const = 0;
        virtual void height(Real value) = 0;

        virtual void resize(Real left, Real top, Real width, Real height) = 0;

        virtual ICamera* camera() = 0;
        virtual void camera(ICamera* cam) = 0;

        virtual math::Color backgroundColor() const = 0;
        virtual void backgroundColor(math::Color const& color) = 0;
    };

    typedef SharedPtr<IViewport> IViewportPtr;
}}

// -----------------------------------------------------------

#endif